package org.minuframework.lang;

import java.util.Iterator;
import java.util.List;
import java.util.Map;
import java.util.Map.Entry;

import com.google.common.collect.Lists;

/**
 * Map -> List
 * @author 米mi
 */
public class MapUtils{
    
    /**
     * Map转集合（K）
     * @param m Map<K, V>
     * @return List List<K>
     */
    public static <K, V> List<K> asKList(Map<K, V> m){
        List<K> result = Lists.newArrayList();
        if (m == null || m.isEmpty()) { return result; }
        
        Iterator<Entry<K, V>> it = m.entrySet().iterator();
        while (it.hasNext()) {
            Entry<K, V> entry = it.next();
            if (entry != null) {
                K value = entry.getKey();
                if (value != null) {
                    result.add(value);
                }
            }
        }
        
        return result;
    }
    
    /**
     * Map转集合（V）
     * @param m Map<K, V>
     * @return List List<V>
     */
    public static <K, V> List<V> asVList(Map<K, V> m){
        List<V> result = Lists.newArrayList();
        if (m == null || m.isEmpty()) { return result; }
        
        Iterator<Entry<K, V>> it = m.entrySet().iterator();
        while (it.hasNext()) {
            Entry<K, V> entry = it.next();
            if (entry != null) {
                V value = entry.getValue();
                if (value != null) {
                    result.add(value);
                }
            }
        }
        
        return result;
    }
    
    public static <V, K> boolean checkForNull(Map<? extends K, ? extends V> m){
        if (m == null || m.isEmpty()) { return true; }
        return false;
    }
    
}
